クラスファイルを逆アセンブルします。
javap [ options ] class. . .
javap コマンドは、クラスファイルを逆アセンブルします。その出力は指定するオプションにより異なります。オプションを指定しない場合、javap は、そのパッケージ、渡されたクラスの protected および public のフィールドとメソッドを出力します。 javap はその出力を標準出力に表示します。たとえば、次のクラス宣言をコンパイルするとします。
import java.awt.*; import java.applet.*; public class DocFooter extends Applet { String date; String email; public void init() { resize(500,100); date = getParameter("LAST_UPDATED"); email = getParameter("EMAIL"); } public void paint(Graphics g) { g.drawString(date + " by ",100, 15); g.drawString(email,290,15); } }javap DocFooter がもたらす出力は次のようになります。
Compiled from DocFooter.java public class DocFooter extends java.applet.Applet { java.lang.String date; java.lang.String email; public DocFooter(); public void init(); public void paint(java.awt.Graphics); }javap -c DocFooter がもたらす出力は次のようになります。
Compiled from DocFooter.java public class DocFooter extends java.applet.Applet { java.lang.String date; java.lang.String email; public DocFooter(); public void init(); public void paint(java.awt.Graphics); } Method DocFooter() 0 aload_0 1 invokespecial #1 <Method java.applet.Applet()> 4 return Method void init() 0 aload_0 1 sipush 500 4 bipush 100 6 invokevirtual #2 <Method void resize(int, int)> 9 aload_0 10 aload_0 11 ldc #3 <String "LAST_UPDATED"> 13 invokevirtual #4 <Method java.lang.String getParameter(java.lang.String)> 16 putfield #5 <Field java.lang.String date> 19 aload_0 20 aload_0 21 ldc #6 <String "EMAIL"> 23 invokevirtual #4 <Method java.lang.String getParameter(java.lang.String)> 26 putfield #7 <Field java.lang.String email> 29 return Method void paint(java.awt.Graphics) 0 aload_1 1 new #8 <Class java.lang.StringBuffer> 4 dup 5 invokespecial #9 <Method java.lang.StringBuffer()> 8 aload_0 9 getfield #5 <Field java.lang.String date> 12 invokevirtual #10 <Method java.lang.StringBuffer append(java.lang.String)> 15 ldc #11 <String " by "> 17 invokevirtual #10 <Method java.lang.StringBuffer append(java.lang.String)> 20 invokevirtual #12 <Method java.lang.String toString()> 23 bipush 100 25 bipush 15 27 invokevirtual #13 <Method void drawString(java.lang.String, int, int)> 30 aload_1 31 aload_0 32 getfield #7 <Field java.lang.String email> 35 sipush 290 38 bipush 15 40 invokevirtual #13 <Method void drawString(java.lang.String, int, int)> 43 return
- -help
- javap のヘルプメッセージを出力します。
- -l
- 行番号と局所変数テーブルを表示します。
- -b
- JDK 1.1 の javap との下位互換性を保証します。
- -public
- public クラスおよびメンバーだけを表示します。
- -protected
- protected および public のクラスとメンバーだけを表示します。
- -package
- package、protected、および public のクラスとメンバーだけを表示します。これはデフォルトの設定です。
- -private
- すべてのクラスとメンバーを表示します。
- -Jflag
- ランタイムシステムに直接 flag を渡します。使用例を次に示します。
javap -J-version javap -J-Djava.security.manager -J-Djava.security.policy=MyPolicy MyClassName- -s
- 内部の型シグニチャーを出力します。
- -c
- クラスの各メソッドのために逆アセンブルされるコード、すなわち Java バイトコードから成る命令を表示します。これらは「Java Virtual Machine Specification」にドキュメント化されています。
- -verbose
- メソッドのスタックサイズ、および
locals
とargs
の数を出力します。- -classpath path
- javap がクラスを探すために使用するパスを指定します。デフォルトまたは CLASSPATH 環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、path の一般形式は次のようになります。
.:<your_path>例を示します。.:/home/avh/classes:/usr/local/java/classes- -bootclasspath path
- ブートストラップクラスをロードするパスを指定します。ブートストラップクラスは、デフォルトでは jre/lib/rt.jar および他のいくつかの JAR ファイル にある、コア Java 2 プラットフォームを実装するクラスです。
- -extdirs dirs
- インストールされた拡張機能を検索する場所をオーバーライドします。The default location for extensions is the value of java.ext.dirs.
- CLASSPATH
- ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。 次に例を示します。
.:/home/avh/classes:/usr/local/java/classes
Copyright © 2002-2006 Sun Microsystems, Inc. All Rights Reserved. |
Java Software |